package com.badibadi.mytools;

import java.util.HashMap;
import java.util.Map;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;
import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.framework.Platform.ShareParams;
import cn.sharesdk.onekeyshare.OnekeyShare;
import cn.sharesdk.onekeyshare.ShareContentCustomizeCallback;

import com.badibadi.uniclubber.R;
import com.libjph.util.StringUtil;
import com.lidroid.xutils.util.LogUtils;

public class ShareSDKTools {

	static OnekeyShare oks;
	/**
	 * *****************注意参数含义*********************站内分享在分享时都是分享到个人动态中，
	 * 俱乐部动态中不会显示分享 心情、活动、俱乐部站内分享操作---POST-----站内分享应只有 心情、活动、俱乐部 才可以分享
	 * 
	 * @param $uid
	 *            登录用户ID（发起分享的用户）
	 * @param $type
	 *            分享类型 心情动态：humor_trends 活动：activity 俱乐部：club
	 * @param $share_id
	 *            被分享的内容ID（心情动态ID 或 活动ID 或 俱乐部ID）
	 * @param $dul
	 *            分享谁的心情动态、活动、俱乐部-------发布被分享的动态原始数据的用户ID
	 * @param $cid
	 *            俱乐部ID---该参数只在俱乐部动态中才有非0值，对于个人中心动态中的$cid=0
	 */
	public static Context ct;
	public static CallBack callBack;
	public static android.os.Handler sharehanders = new Handler() {
		public void handleMessage(Message msg) {

			switch (msg.what) {
			case 0:// 系统错误
				if (ct != null)
					Utils.ExitPrgress(ct);
				try {
					Utils.showMessage(ct,
							ct.getResources().getString(R.string.SystemError));
				} catch (Exception e) {
					// TODO: handle exception
				}

				break;
			case 1:// 分享成功
				if (ct != null)
					Utils.ExitPrgress(ct);
				try {
					Utils.showMessage(
							ct,
							ct.getResources().getString(
									R.string.share_completed));

					if (callBack != null) {
						callBack.ShareFinishCallBack();
						callBack = null;
					}
				} catch (Exception e) {
					// TODO: handle exception
				}
				break;
			case 2:// 分享失败
				if (ct != null)
					Utils.ExitPrgress(ct);
				try {
					Utils.showMessage(ct,
							ct.getResources().getString(R.string.wx_txt_108));

				} catch (Exception e) {
					// TODO: handle exception
				}
				// ////////////////////////
				break;
			case 3:
				if (ct != null)
					Utils.ExitPrgress(ct);

				break;
			case 4:
				if (ct != null)
					Utils.ExitPrgress(ct);
				break;
			case 5:
				if (ct != null)
					Utils.ExitPrgress(ct);
				try {
					StringBuffer buff = new StringBuffer(msg.getData()
							.getString("hmsg"));
					buff.append(","
							+ msg.getData().getString("msg",
									",http://www.uniclubber.com"));
//					LogUtils.d("buff.toString=" + buff.toString());
					oks.setText(buff.toString());
					oks.setTitle(ct.getResources().getString(R.string.wx2_15));
					oks.setTitleUrl(msg.getData().getString("msg",
							"http://www.uniclubber.com"));
					// // url仅在微信（包括好友和朋友圈）中使用
					oks.setUrl(msg.getData().getString("msg",
							"http://www.uniclubber.com"));
//					LogUtils.d(""
//							+ msg.getData().getString("msg",
//									"http://www.uniclubber.com"));
					oks.show(ct);
				} catch (Exception e) {
					// TODO: handle exception
				}
				break;
			case 6://
				if (ct != null)
					Utils.ExitPrgress(ct);
				try {
					Utils.showMessage(ct,
							ct.getResources().getString(R.string.l_xb113));
				} catch (Exception e) {
					// TODO: handle exception
				}
				break;
			}
			;
		};
	};

	/**
	 * 
	 * @param context
	 *            上下文
	 * @param title
	 *            (标签)
	 * @param text
	 *            （内容）
	 * @param titleUrl
	 *            (不传)
	 * @param ImageUrl
	 *            下面是 站内分享要传的
	 * @param type
	 *            分享类型 心情动态：humor_trends 活动：activity 俱乐部：club
	 * 
	 * @param $share_id
	 *            被分享的内容ID（心情动态ID 或 活动ID 或 俱乐部ID）
	 * @param $dul
	 *            分享谁的心情动态、活动、俱乐部-------发布被分享的动态原始数据的用户ID
	 * @param $cid
	 *            俱乐部ID---该参数只在俱乐部动态中才有非0值，对于个人中心动态中的$cid=0
	 * 
	 *            站外分享返回相应链接----POST
	 * @param $type2
	 *            //分享类型 photo_img： 相片 humor_trends:心情动态 record_article：记录（记）
	 *            club:创建的俱乐部 activity：发起的活动
	 * 
	 *            //friend：朋友
	 * 
	 * 
	 * 
	 */
	/**
	 * 
	 * @param context
	 *            上下文
	 * @param title
	 *            (标签)
	 * @param text
	 * @param titleUrl
	 * @param ImageUrl
	 * @param type
	 * @param share_id
	 * @param dul
	 * @param cid
	 * @param type2
	 */
	public static void ShowOneKeyShare(final Context context, String title,
			String text, String titleUrl, String ImageUrl, final String type,
			final String share_id, final String dul, final String cid,
			String type2) {
		oks = new OnekeyShare();
		ct = context;
		ShareSDK.initSDK(context);
//		LogUtils.d("titile=" + title + " text=" + text + " titleUrl="
//				+ titleUrl + " ImageUrl=" + ImageUrl + " type=" + type
//				+ " share_id=" + share_id + "dul=" + dul + "cid=" + cid
//				+ "type2=" + type2);
		// String.format(format, safd,asfd,)
		// photo_img：相片
		// humor_trends:心情动态
		// record_article：记录（记）
		// club:创建的俱乐部
		// activity：发起的活动
		// friend：朋友
		if (("" + type2).equals("club")) {// type2
			String aa = String.format(
					context.getResources().getString(R.string.wx2_17),
					Utils.getu_Name(context), text);
			titleUrl = aa;
			// titleUrl = "来自：(聚樂庫(UniClubber)," + Utils.getu_Name(context)
			// + "用户邀请你加入" + text + "俱乐部";
		} else if (("" + type2).equals("photo_img")) {
			titleUrl = context.getResources().getString(R.string.wx2_18);
			// titleUrl = "来自：(聚樂庫(UniClubber)" + "的分享";
		} else if (("" + type2).equals("record_article")) {
			String bb = String.format(context.getResources().getString(
					R.string.wx2_19, Utils.getu_Name(context), text));
			titleUrl = bb;
//			LogUtils.i("222行" + titleUrl);
			// titleUrl = "来自：(聚樂庫(UniClubber)" + Utils.getu_Name(context) +
			// "分享了"
			// + text + "记录";
		} else if (("" + type2).equals("activity")) {

			String cc = String.format(context.getResources().getString(
					R.string.wx2_20, Utils.getu_Name(context), text));
			titleUrl = cc;
			// titleUrl = "来自：(聚樂庫(UniClubber)" + Utils.getu_Name(context)
			// + "邀请你参加" + text + "活动";
		} else if (("" + type2).equals("friend")) {

			String dd = String.format(context.getResources().getString(
					R.string.wx2_21, Utils.getu_Name(context)));
			// titleUrl = "来自：(聚樂庫(UniClubber)" + Utils.getu_Name(context)
			// + "邀请你加入聚乐库";
			titleUrl = dd;
		} else if (("" + type).equals("humor_trends")) {
			String ee = String.format(context.getResources().getString(
					R.string.wx2_22));
			titleUrl = ee;
			titleUrl=titleUrl+text;
		} else {
			String ee = String.format(context.getResources().getString(
					R.string.wx2_22));
			titleUrl = ee;
			// titleUrl = "分享来自：(聚樂庫(UniClubber):www.uniclubber.com";
		}

		//
		// StringBuffer buff=new StringBuffer(title);
		// buff.append("来自：(聚樂庫(UniClubber):www.uniclubber.com)");

		// ImageUrl=Constants.BadiDownImgUrl+"/"+ImageUrl;

		oks.setNotification(R.drawable.icon,
				context.getString(R.string.sharing));
		// // //关闭sso授权
		oks.disableSSOWhenAuthorize();
		// 分享时Notification的图标和文字
		oks.setNotification(R.drawable.icon,
				context.getResources().getString(R.string.app_name));
//		LogUtils.w("titleUrl=" + titleUrl);
//		LogUtils.i("260行" + text);

		// titleUrl = titleUrl + text;

//		LogUtils.i("262行" + titleUrl);
		// title标题，印象笔记、邮箱、信息、微信、人人网和QQ空间使用
		// oks.setTitle(titleUrl);
		// titleUrl是标题的网络链接，仅在人人网和QQ空间使用
		// oks.setTitleUrl(titleUrl);
		// text是分享文本，所有平台都需要这个字段
		// oks.setText(titleUrl);
		// 微信的两个平台、Linked-In支持此字段
		if (!StringUtil.isNullOrEmpty(ImageUrl)
				&& !ImageUrl.equals(Constants.BadiDownImgUrl)) {
			oks.setImageUrl(ImageUrl);
			// LogUtils.d("ImageUrl=" + ImageUrl);
		} else {
			oks.setImageUrl(Constants.share_no_image_share_address);
			// LogUtils.d("ImageUrl=" + Constants.share_no_image_share_address);
		}
		// LogUtils.d("ImageUrl="+ImageUrl);
		// // imagePath是图片的本地路径，Linked-In以外的平台都支持此参数
		// oks.setImagePath("/mnt/sdcard/test.png");

		// address是接收人地址，仅在信息和邮件使用
		oks.setAddress(" ");
		// // comment是我对这条分享的评论，仅在人人网和QQ空间使用
		oks.setComment(" ");
		// // site是分享此内容的网站名称，仅在QQ空间使用
		oks.setSite(context.getResources().getString(R.string.app_name));
		// // siteUrl是分享此内容的网站地址，仅在QQ空间使用
		oks.setSiteUrl("http://www.uniclubber.com");

		// 构造一个图标
		Bitmap logo = BitmapFactory.decodeResource(context.getResources(),
				R.drawable.icon2);
		// 定义图标的标签
		String label = "" + context.getResources().getString(R.string.wx2_26);// context.getResources().getString("站内分享");//R.string.app_name
		// 图标点击后会通过Toast提示消息
		OnClickListener listener = new OnClickListener() {
			public void onClick(View v) {
				// Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show();

				if (type != null) {
					if (type.equals("0")) {
						Utils.showMessage(ct,
								ct.getResources().getString(R.string.l_xb176));
					} else {
						innerShare(type, share_id, dul, cid);
					}

				} else {
					// innerShare(type, share_id, dul, cid);
					Utils.showMessage(ct,
							ct.getResources().getString(R.string.l_xb176));
				}

				// oks.finish();
			}
		};

		// oks.setCustomerLogo(logo, label, listener);
		oks.setCustomerLogo(logo, logo, label, listener);
		// oks.show(FenXiangActivity.this);
		oks.setShareContentCustomizeCallback(new ShareContentCustomizeCallback() {

			@Override
			public void onShare(Platform platform, ShareParams paramsToShare) {
				// TODO Auto-generated method stub
//				   
			}
		});
		outerShareUrl(type2, dul, cid, share_id, titleUrl);
		// 启动分享GUI
		// oks.show(context);
	}

	/**
	 * 
	 * @param context
	 *            上下文
	 * @param title
	 *            (标签)
	 * @param text
	 *            （内容）
	 * @param titleUrl
	 *            (不传)
	 * @param ImageUrl
	 * */
	public static void ShowOnekeyshare2(final Context context, String title,
			String text, String titleUrl, String ImageUrl) {

		final OnekeyShare oks = new OnekeyShare();
		ct = context;
		ShareSDK.initSDK(context);
		titleUrl = context.getResources().getString(R.string.wx2_15);
		StringBuffer buff = new StringBuffer(title);
		buff.append(context.getResources().getString(R.string.wx2_15));

		// ImageUrl=Constants.BadiDownImgUrl+"/"+ImageUrl;

		oks.setNotification(R.drawable.icon,
				context.getString(R.string.sharing));
		// // //关闭sso授权
		oks.disableSSOWhenAuthorize();
		// 分享时Notification的图标和文字
		// oks.setNotification(R.drawable.icon,
		// context.getResources().getString(R.string.app_name));
		// title标题，印象笔记、邮箱、信息、微信、人人网和QQ空间使用
		oks.setTitle(buff.toString());
		// titleUrl是标题的网络链接，仅在人人网和QQ空间使用
		oks.setTitleUrl(titleUrl);
		// text是分享文本，所有平台都需要这个字段
		oks.setText(text);
		// 微信的两个平台、Linked-In支持此字段

		if (!StringUtil.isNullOrEmpty(ImageUrl)) {
			oks.setImageUrl(ImageUrl);
		} else {
			oks.setImageUrl(Constants.share_no_image_share_address);
//			LogUtils.d("ImageUrl=" + ImageUrl);
		}
		// oks.setImageUrl(ImageUrl);
		// LogUtils.d("ImageUrl="+ImageUrl);
		// // imagePath是图片的本地路径，Linked-In以外的平台都支持此参数
		// oks.setImagePath("/mnt/sdcard/test.png");
		// // url仅在微信（包括好友和朋友圈）中使用
		oks.setUrl("http://www.uniclubber.com");

		// address是接收人地址，仅在信息和邮件使用
		oks.setAddress("");
		// // comment是我对这条分享的评论，仅在人人网和QQ空间使用
		oks.setComment("");
		// // site是分享此内容的网站名称，仅在QQ空间使用
		oks.setSite(context.getResources().getString(R.string.app_name));
		// // siteUrl是分享此内容的网站地址，仅在QQ空间使用
		oks.setSiteUrl("http://www.uniclubber.com");

		// // 构造一个图标
		// Bitmap logo = BitmapFactory.decodeResource(context.getResources(),
		// R.drawable.icon);
		// // 定义图标的标签
		// String label ="站内分享";//
		// context.getResources().getString("站内分享");//R.string.app_name
		// // 图标点击后会通过Toast提示消息
		// OnClickListener listener = new OnClickListener() {
		// public void onClick(View v) {
		// // Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show();
		// if (type.equals("0") || type==null) {
		// Utils.showMessage(ct, "心情、活动、俱乐部才能分享");
		// } else {
		// innerShare(type, share_id, dul, cid);
		// }
		//
		// oks.finish();
		// }
		// };
		// oks.setCustomerLogo(logo, label, listener);
		// oks.show(FenXiangActivity.this);
		oks.setShareContentCustomizeCallback(new ShareContentCustomizeCallback() {

			@Override
			public void onShare(Platform platform, ShareParams paramsToShare) {
				// TODO Auto-generated method stub
//				   
			}
		});
		// outerShareUrl(type2,dul,cid,share_id);
		// 启动分享GUI
		// oks.show(context);

		oks.show(context);
	}

	// 所有参数
	// public static void showOnekeyshare(Context context,String platform,
	// boolean silent) {
	// OnekeyShare oks = new OnekeyShare();
	//
	// // 分享时Notification的图标和文字
	// oks.setNotification(R.drawable.ic_launcher,
	// context.getResources().getString(R.string.app_name));
	// // address是接收人地址，仅在信息和邮件使用
	// oks.setAddress("12345678901");
	// // title标题，印象笔记、邮箱、信息、微信、人人网和QQ空间使用
	// oks.setTitle(context.getResources().getString(R.string.share));
	// // titleUrl是标题的网络链接，仅在人人网和QQ空间使用
	// oks.setTitleUrl("http://sharesdk.cn");
	// // text是分享文本，所有平台都需要这个字段
	// oks.setText("我是分享的文本");
	// // imagePath是图片的本地路径，Linked-In以外的平台都支持此参数
	// oks.setImagePath(MainActivity.TEST_IMAGE);
	// // imageUrl是图片的网络路径，新浪微博、人人网、QQ空间、
	// // 微信的两个平台、Linked-In支持此字段
	// oks.setImageUrl("http://d.lanrentuku.com/down/png/0904/Mammoth_Icons/Mammooth.png");
	// // url仅在微信（包括好友和朋友圈）中使用
	// oks.setUrl("http://sharesdk.cn");
	// // appPath是待分享应用程序的本地路劲，仅在微信中使用
	// // oks.setAppPath(MainActivity.TEST_IMAGE);
	// // comment是我对这条分享的评论，仅在人人网和QQ空间使用
	// // oks.setComment(getContext().getString(R.string.share));
	// // site是分享此内容的网站名称，仅在QQ空间使用
	// oks.setSite(context.getString(R.string.app_name));
	// // siteUrl是分享此内容的网站地址，仅在QQ空间使用
	// oks.setSiteUrl("http://sharesdk.cn");
	// // venueName是分享社区名称，仅在Foursquare使用
	// oks.setVenueName("Southeast in China");
	// // venueDescription是分享社区描述，仅在Foursquare使用
	// oks.setVenueDescription("This is a beautiful place!");
	// // latitude是维度数据，仅在新浪微博、腾讯微博和Foursquare使用
	// oks.setLatitude(23.122619f);
	// // longitude是经度数据，仅在新浪微博、腾讯微博和Foursquare使用
	// oks.setLongitude(113.372338f);
	// // 是否直接分享（true则直接分享）
	// oks.setSilent(silent);
	// // 指定分享平台，和slient一起使用可以直接分享到指定的平台
	// if (platform != null) {
	// oks.setPlatform(platform);
	// }
	// // 去除注释可通过OneKeyShareCallback来捕获快捷分享的处理结果
	// // oks.setCallback(new OneKeyShareCallback());
	// //通过OneKeyShareCallback来修改不同平台分享的内容
	// oks.setShareContentCustomizeCallback(new ShareContentCustomizeCallback()
	// {
	//
	// @Override
	// public void onShare(Platform platform, ShareParams paramsToShare) {
	// // TODO Auto-generated method stub
	//
	// }
	// };
	//
	// oks.show(context);
	// }
	/**
	 * *****************注意参数含义*********************站内分享在分享时都是分享到个人动态中，
	 * 俱乐部动态中不会显示分享 心情、活动、俱乐部站内分享操作---POST-----站内分享应只有 心情、活动、俱乐部 才可以分享
	 * 
	 * @param $uid
	 *            登录用户ID（发起分享的用户）
	 * @param $type
	 *            分享类型 心情动态：humor_trends 活动：activity 俱乐部：club
	 * @param $share_id
	 *            被分享的内容ID（心情动态ID 或 活动ID 或 俱乐部ID）
	 * @param $dul
	 *            分享谁的心情动态、活动、俱乐部-------发布被分享的动态原始数据的用户ID
	 * @param $cid
	 *            俱乐部ID---该参数只在俱乐部动态中才有非0值，对于个人中心动态中的$cid=0
	 */
	public static void innerShare(String type, String share_id, String dul,
			String cid) {
		String uid = Utils.getUid(ct);
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("uid", uid);
		map.put("type", type);
		map.put("share_id", share_id);
		map.put("dul", dul);
		map.put("cid", cid);
		CommonUtils.CommomPostfunction(ct, Constants.BadiUrl_1 + "/"
				+ "commonality/innerShare", map, sharehanders, 0, 0, 1, 2);
	}

	/**
	 * 站外分享返回相应链接----POST
	 * 
	 * @param $type
	 *            分享类型 photo_img：相片 humor_trends:心情动态 record_article：记录（记）
	 *            club:创建的俱乐部 activity：发起的活动 friend：朋友
	 * @param $uid
	 *            被分享的内容所属的用户
	 * @param $cid
	 *            被分享的内容所属的俱乐部 个人内容时$cid=0
	 * @param $conId
	 *            被分享的内容ID
	 * */
	public static void outerShareUrl(String type, String uid, String cid,
			String conId, String msg) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("uid", uid);
		map.put("type", type);
		map.put("cid", cid);
		map.put("conId", conId);
		CommonUtils.CommomPostfunction(ct, Constants.BadiUrl_1 + "/"
				+ "web/outerShareUrl", map, sharehanders, 0, 0, 5, 5, msg);
	}

	/**
	 * 站内分享成功后的回调
	 * 
	 * @param call
	 */
	public static void setOnShareFinishCallBack(CallBack call) {
		callBack = call;
	}

	public interface CallBack {
		void ShareFinishCallBack();
	}

}
